from django.http import JsonResponse
from django.shortcuts import render
from django.views import View
from django.core.cache import cache
from apps.areas.models import Area

# Create your views here.

"""
需求
    获取省信息
前端
    当页面加载的时候，会发送axios去请求来获取省份信息
后端：
    请求      不需要请求参数
    业务逻辑   查询省份信息
    响应      JSON
    路由      areas/
    步骤
        1.查询省份信息
        2.将对象转化为字典数据
        3.返回响应
"""

class AreaView(View):
    def get(self,request):
        #先查询有没有缓存数据
        province_list=cache.get('province')
        if province_list is None:
            # 1.查询省份信息
            provinces=Area.objects.filter(parent=None)
            #查询结果集
            province_list=[]
            # 2.将对象转化为字典数据
            for province in provinces:
                province_list.append({
                    'id':province.id,
                    'name':province.name
                })
            #保存缓存数据
            cache.set('province',province_list,24*60*60)
        # 3.返回响应
        return JsonResponse({'code':0,'errmsg':'ok','province_list':province_list})

"""
需求
    获取市、区县信息
前端
    当页面修改省、市的时候，会发送axios去请求来获取下一级信息
后端：
    请求      传递省份id、市的id
    业务逻辑   根据id查询信息，将查询的结果条件转换为字典列表
    响应      JSON
    路由      areas/<id>/
    步骤
        1.查询省份id、市的id，查询信息
        2.将对象转化为字典数据
        3.返回响应
"""
class SubAreaView(View):
    def get(self,request,id):
        data_list = cache.get(id)
        up_level=Area.objects.get(id=id)
        down_level=up_level.subs.all()
        data_list=[]
        for item in down_level:
            data_list.append({
                'id':item.id,
                'name':item.name
            })
        #缓存数据
        cache.set(id,data_list,24*60*60)
        return JsonResponse({'code':0,'errmsg':'ok','sub_data':{'subs':data_list}})
        pass